home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d6
/
amort.arc
/
AMORTIZE.BAS
next >
Wrap
BASIC Source File
|
1988-11-09
|
11KB
|
315 lines
10 KEY 10,"EDIT ":KEY OFF
20 REM ============
30 REM AMORTIZE.BAS
40 REM MODIFIED FOR USE ON SANYO MBC 550 SERIES COMPUTER
50 REM BY George Vigneron 11-07-88
60 REM ============
65 DD$ = ""
70 CLEAR:U$="$$###,###.##":DIM MO$(12)
80 DATA Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
90 FOR X=1 TO 12:READ MO$(X):NEXT X
100 GOTO 140
110 A$=INKEY$:IF A$="" THEN 110
120 IF ASC(A$)>96 AND ASC(A$)<123 THEN A$=CHR$(ASC(A$)-32)
130 RETURN
140 CLS:DEF FNA(N9)=(1!-(R2+1!)^(-N9))/R2
150 DEF FNR(Z9)=ABS(.01*INT(Z9*100!+.5))
160 PRINT STRING$(79,205)
170 A$="Loan Amortization Program":LOCATE 2,40-(LEN(A$)/2)
180 PRINT A$
190 PRINT STRING$(79,205)
200 PRINT :PRINT"Do you wish a description ? Type (Y/N)"
220 GOSUB 110:LOCATE 8,1,0
230 IF A$="N" THEN 330
240 IF A$<>"Y" THEN LOCATE 1,1,1:GOTO 220
250 CLS
260 PRINT"This program computes mortgage loan values and"
270 PRINT"will print an amortization schedule given any"
280 PRINT"three of the four loan values:"
290 PRINT"1) Intrest rate"
300 PRINT"2) Monthly payment"
310 PRINT"3) Life of the loan"
320 PRINT"4) Amount of the loan"
330 PRINT :PRINT"Enter values for ";
340 PRINT"3 of the ";
350 PRINT"4 following inputs"
360 PRINT"and a zero for the one you wish computed...."
370 PRINT :INPUT"Amount of the loan"; A2
380 A2=ABS(A2)
390 INPUT"Monthly payment"; P2
400 P2=ABS(P2)
410 PRINT"Intrest rate (e.g. 5 1/4% would be 5.25)";
420 INPUT R2
430 A3=ABS(R2):R2=A3/1200
440 PRINT"Life of the loan (e.g. 8 years 2 months would be 8.02)";
450 INPUT L1
460 L1=ABS(L1):Y2=INT(L1):M2=INT(100*(L1-Y2) +.9)
470 PRINT"Enter date of 1st. payment (MMYYYY)";
480 INPUT MA$
490 MA=VAL(LEFT$(MA$,2))
500 YA=VAL(RIGHT$(MA$,2))
510 IF MA<1 OR MA>12 THEN 470
520 IF M2<12 THEN 550
530 PRINT"Invalid input-Try Again!"
540 GOTO 440
550 CLS:N2=12*Y2+M2
560 K3=0
570 IF R2<>0 THEN 590
580 K3=K3+1
590 IF P2<>0 THEN 610
600 K3=K3+1
610 IF N2<>0 THEN 630
620 K3=K3+1
630 IF A2<>0 THEN 650
640 K3=K3+1
650 IF K3=1 THEN 690
660 PRINT
670 PRINT"Sorry, I don't know which one to compute."
680 GOTO 330
690 PRINT
700 PRINT
710 IF R2=0 THEN 930
720 IF A2=0 THEN 1160
730 IF P2=0 THEN 1200
740 IF P2*FNA(1)<=A2 THEN 770
750 PRINT" ","Life of the loan is less than 1 month!"
760 GOTO 330
770 FOR N1=1 TO 9999 STEP 12
780 A1=P2*FNA(N1)
790 IF A1>A2 THEN 820
800 IF A1=A2 THEN 870
810 NEXT N1
820 J=N1-11
830 FOR N2=J TO N1
840 A1=P2*FNA(N2)
850 IF A1>=A2 THEN 880
860 NEXT N2
870 N2=N1
880 Y2=INT(N2/12)
890 M2=INT(N2-12*Y2)
900 PRINT" ","Loan period is";:PRINT Y2
910 PRINT"years ;PRINT M2;PRINT" MONTHS."
920 GOTO 1240
930 IF P2*N2>=A2 THEN 970
940 PRINT" ,Loan can not be repaid at"
950 PRINT USING U$;P2;:PRINT"a month."
960 GOTO 330
970 X=0
980 IF P2*N2<=A2 THEN 1120
990 FOR I=1 TO 9999
1000 R2=I/1200
1010 A1=P2*FNA(N2)
1020 IF A1<A2 THEN 1070
1030 IF A1<>A2 THEN 1060
1040 X=I
1050 GOTO 1120
1060 NEXT I
1070 X=I-.99
1080 X=X+.001
1090 R2=X/1200
1100 A1=P2*FNA(N2)
1110 IF A1-.00001*A2>A2 THEN 1080
1120 R2=X/1200
1130 A3=.001*INT(1000*(X+.0005))
1140 PRINT" ","Annual intrest rate is";:PRINT A3;:PRINT"%"
1150 GOTO 1240
1160 A2=P2*FNA(N2)
1170 A8=FNR(A2)
1180 PRINT" ","Amount of loan is";:PRINT USING U$;A8
1190 GOTO 1210
1200 P2=A2/FNA(N2)
1210 P8=FNR(P2)
1220 PRINT"Monthly payment is";
1230 PRINT USING U$; P8
1240 I2=P8*N2-A2
1250 PRINT"Total intrest on loan is";
1260 PRINT USING U$; FNR(I2)
1270 PRINT :PRINT
1280 PRINT"Do you wish an amortization schedule ? Type (";
1290 PRINT"Y/N)"
1300 GOSUB 110
1310 IF A$="Y" THEN 1390
1320 IF A$<>"N" THEN 1300
1330 PRINT"Another analysis ? Type (Y/N)"
1340 GOSUB 110
1350 IF A$="Y" THEN PRINT :GOTO 330
1360 IF A$<>"N" THEN 1340
1370 CLS:PRINT"E N D M O R G A G E"
1380 END
1390 PRINT
1400 PRINT"Type 1";
1410 PRINT" for annual table, ";
1420 PRINT"2 for monthly table."
1430 GOSUB 110:K2=VAL(A$)
1440 IF K2<1 OR K2>2 THEN 1430
1450 PRINT :PRINT"Direct output to <S";
1460 PRINT">creen or <P";
1470 PRINT">rinter":GOSUB 110:CLOSE
1480 IF A$="S" THEN ZZ = 1
1490 IF A$="P" THEN ZZ = 2
1500 CLS
1504 IF ZZ = 1 THEN PRINT STRING$(79,"=")
1508 IF ZZ = 2 THEN LPRINT STRING$(79,"=")
1510 A$="*** Mortgage Table ***"
1520 IF ZZ = 1 THEN PRINT TAB(40-(LEN(A$)/2)) A$
1530 IF ZZ = 2 THEN LPRINT TAB(40-(LEN(A$)/2)) A$
1540 IF ZZ = 1 THEN PRINT STRING$(79,"=")
1550 IF ZZ = 2 THEN LPRINT STRING$(79,"=")
1560 A8=FNR(A2)
1570 IF ZZ = 1 THEN PRINT "Amount of loan";
1574 IF ZZ = 1 THEN PRINT USING U$;A8;
1580 IF ZZ = 2 THEN LPRINT "Amount of loan";
1587 IF ZZ = 2 THEN LPRINT USING U$;A8;
1590 IF ZZ = 1 THEN PRINT TAB(50)"Annual intrest rate";
1600 IF ZZ = 2 THEN LPRINT TAB(50)"Annual intrest rate";
1610 IF ZZ = 1 THEN PRINT A3;
1620 IF ZZ = 2 THEN LPRINT A3;
1630 IF ZZ = 1 THEN PRINT "%"
1640 IF ZZ = 2 THEN LPRINT "%"
1650 P8=FNR(P2)
1660 IF ZZ = 1 THEN PRINT "Monthly payment";
1665 IF ZZ = 2 THEN LPRINT "Monthly payment";
1670 IF ZZ = 1 THEN PRINT USING U$; P8
1675 IF ZZ = 2 THEN LPRINT USING U$; P8
1680 IF ZZ = 1 THEN PRINT TAB(50)"Repaid in";
1685 IF ZZ = 2 THEN LPRINT TAB(50)"Repaid in";
1690 IF ZZ = 1 THEN PRINT Y2;
1695 IF ZZ = 2 THEN LPRINT Y2;
1700 IF ZZ = 1 THEN PRINT "years";
1705 IF ZZ = 2 THEN LPRINT "years";
1710 IF ZZ = 1 THEN PRINT M2;
1715 IF ZZ = 2 THEN LPRINT M2;
1720 IF ZZ = 1 THEN PRINT "months"
1725 IF ZZ = 2 THEN LPRINT "months"
1730 IF ZZ = 1 THEN PRINT "Total interest";
1735 IF ZZ = 2 THEN LPRINT "Total interest";
1740 IF ZZ = 1 THEN PRINT USING U$; FNR(I2)
1745 IF ZZ = 2 THEN LPRINT USING U$; FNR(I2)
1750 IF ZZ = 1 THEN PRINT"Press any key to get amorization schedule."ELSE GOTO 1780
1760 GOSUB 110
1770 CLS
1780 GOSUB 2640
1790 M=0:E=0:DEC=1900
1800 K=0:K1=0:K3=0
1810 A1=A2:MA=MA-1:YA=YA+DEC
1820 T1=0:PL=0
1830 T2=0
1840 FOR J=1 TO N2
1850 K1=K1+1:K=K+1
1860 MA=MA+1:P9=P9+P8
1870 IF MA>12 THEN MA=MA-12:YA=YA+1:IF YA>DEC+100 THEN DEC=DEC+100
1880 X7=FNR(A1*R2)
1890 P7=P2-X7
1900 IF P7<=A1 THEN 1920
1910 P7=A1
1920 T1=T1+X7
1930 T2=T2+P7
1940 A1=A1-P7
1950 IF K2=1 THEN 2060
1960 IF P7+X7=0 THEN 2080
1970 D1=FNR(A1)
1980 D2=FNR(P7)
1990 D3=FNR(X7)
2000 IF ZZ = 1 THEN PRINT TAB(1)MO$(MA);" '";STR$(YA);"->";
2005 IF ZZ = 2 THEN LPRINT TAB(1)MO$(MA);" '";STR$(YA);"->";
2010 IF ZZ = 1 THEN PRINT TAB(16) DD$;: PRINT USING U$;D1;
2015 IF ZZ = 2 THEN LPRINT TAB(16) DD$;: LPRINT USING U$;D1;
2020 IF ZZ = 1 THEN PRINT TAB(32) DD$;: PRINT USING U$;P8;
2025 IF ZZ = 2 THEN LPRINT TAB(32) DD$;: LPRINT USING U$;P8;
2030 IF ZZ = 1 THEN PRINT TAB(48) DD$;: PRINT USING U$;D2;
2035 IF ZZ = 2 THEN LPRINT TAB(48) DD$;: LPRINT USING U$;D2;
2040 IF ZZ = 1 THEN PRINT TAB(64) DD$;: PRINT USING U$;D3
2045 IF ZZ = 2 THEN LPRINT TAB(64) DD$;: LPRINT USING U$;D3
2050 PL=PL+1
2060 IF MO$(MA)="Dec" THEN K1=12:GOTO 2080
2070 IF K<12 THEN 2260
2080 M=M+1
2090 IF A1+T1+T2=0 THEN 2200
2100 D1=FNR(A1)
2110 D2=FNR(T2)
2120 D3=FNR(T1)
2130 IF K2=2 THEN IF ZZ = 1 THEN PRINT STRING$(79,"-")
2135 IF K2=2 THEN IF ZZ = 2 THEN LPRINT STRING$(79,"-")
2140 IF ZZ = 1 THEN PRINT TAB(1)YA;"Totals";
2145 IF ZZ = 2 THEN LPRINT TAB(1)YA;"Totals";
2150 IF ZZ = 1 THEN PRINT TAB(16) DD$;: PRINT USING U$; D1;
2155 IF ZZ = 2 THEN LPRINT TAB(16) DD$;: LPRINT USING U$; D1;
2160 IF ZZ = 1 THEN PRINT TAB(32) DD$;: PRINT USING U$; P9;
2165 IF ZZ = 2 THEN LPRINT TAB(32) DD$;: LPRINT USING U$; P9;
2170 IF ZZ = 1 THEN PRINT TAB(48) DD$;: PRINT USING U$; D2;
2175 IF ZZ = 2 THEN LPRINT TAB(48) DD$;: LPRINT USING U$; D2;
2180 IF ZZ = 1 THEN PRINT TAB(64) DD$;: PRINT USING U$; D3;
2185 IF ZZ = 2 THEN LPRINT TAB(64) DD$;: LPRINT USING U$; D3;
2190 IF K2=2 AND ZZ = 1 THEN PRINT STRING$(79,"-")
2195 IF K2=2 AND ZZ = 2 THEN LPRINT STRING$(79,"-")
2200 PL=PL+1
2210 T1=0:T2=0:P9=0
2220 K=0:K3=K3+1
2230 IF ZZ = 1 AND K2=2 AND K1>11 THEN GOSUB 2440
2240 IF ZZ = 1 AND K2=1 AND K3>14 THEN GOSUB 2440
2250 IF ZZ = 2 AND PL>30 THEN PL=0:LPRINT CHR$(12):GOSUB 2640
2260 NEXT J:IF K2=1 OR MO$(MA)="Dec" THEN 2380
2270 D1=FNR(A1)
2280 D2=FNR(T2)
2290 D3=FNR(T1)
2300 LOCATE 20,1
2305 IF ZZ = 1 THEN PRINT STRING$(79,"-")
2310 IF ZZ = 2 THEN LPRINT STRING$(79,"-")
2320 IF ZZ = 1 THEN PRINT TAB(1)YA;"Totals";
2325 IF ZZ = 2 THEN LPRINT TAB(1)YA;"Totals";
2330 IF ZZ = 1 THEN PRINT TAB(16) DD$;: PRINT USING U$; D1;
2335 IF ZZ = 2 THEN LPRINT TAB(16) DD$;: LPRINT USING U$; D1;
2340 IF ZZ = 1 THEN PRINT TAB(32) DD$;: PRINT USING U$; P9;
2345 IF ZZ = 2 THEN LPRINT TAB(32) DD$;: LPRINT USING U$; P9;
2350 IF ZZ = 1 THEN PRINT TAB(48) DD$;: PRINT USING U$; D2;
2355 IF ZZ = 2 THEN LPRINT TAB(48) DD$;: LPRINT USING U$; D2;
2360 IF ZZ = 1 THEN PRINT TAB(64) DD$;: PRINT USING U$; D3;
2365 IF ZZ = 2 THEN LPRINT TAB(64) DD$;: LPRINT USING U$; D3;
2370 IF ZZ = 2 THEN LPRINT STRING$(79,"-")
2375 IF ZZ = 1 THEN PRINT STRING$(79,"-")
2380 IF ZZ = 2 THEN LPRINT CHR$(12):GOTO 1330
2390 LOCATE 23,1:PRINT SPC(79);:LOCATE 24,1
2400 PRINT"Press ";
2410 PRINT CHR$(17)+CHR$(196)+CHR$(217);:PRINT" to continue";
2420 A$=INKEY$:IF A$="" THEN 2420
2430 CLS:GOTO 1330
2440 LOCATE 23,19
2450 PRINT "Press "; CHR$(17)+CHR$(196)+CHR$(217);
2460 PRINT " to continue, <M> for Menu "
2480 A$=INKEY$:IF A$="" THEN 2480
2490 IF ASC(A$)=13 THEN K1=0:K3=0:GOTO 2590
2500 IF A$="M" OR A$="m" THEN 2510 ELSE GOTO 2480
2510 LOCATE 23,1:PRINT SPC(79):LOCATE 24,1:PRINT SPC(79):LOCATE 23,19
2520 PRINT"Compute another Amorization Schedule (Y/N)"
2550 GOSUB 110
2560 IF A$="Y" THEN CLS:GOTO 330
2570 IF A$<>"N" THEN 2550
2580 GOTO 1370
2590 IF K2=2 THEN COL=22
2600 IF K2=1 THEN COL=20
2610 IF J=N2 THEN 2380
2620 FOR X=7 TO COL:LOCATE X,1
2624 IF ZZ = 1 THEN PRINT SPACE$(79);
2626 IF ZZ = 2 THEN LPRINT SPACE$(79);
2628 NEXT X
2630 LOCATE 7,1:RETURN
2640 IF ZZ = 1 THEN PRINT STRING$(79,"="):A$="Amorization schedule"
2645 IF ZZ = 2 THEN LPRINT STRING$(79,"="):A$="Amorization schedule"
2650 IF ZZ = 1 THEN PRINT TAB(40-(LEN(A$)/2)) A$
2655 IF ZZ = 2 THEN LPRINT TAB(40-(LEN(A$)/2)) A$
2660 IF ZZ = 1 THEN PRINT STRING$(79,"=")
2665 IF ZZ = 2 THEN LPRINT STRING$(79,"=")
2670 IF ZZ = 1 THEN PRINT TAB(1)"Payment";TAB(19)" Ending";
2675 IF ZZ = 2 THEN LPRINT TAB(1)"Payment";TAB(19)" Ending";
2680 IF ZZ = 1 THEN PRINT TAB(37)"Payment";TAB(52)"Principal";TAB(69)"Interest"
2685 IF ZZ = 2 THEN LPRINT TAB(37)"Payment";TAB(52)"Principal";TAB(69)"Interest"
2690 IF ZZ = 1 THEN PRINT TAB(1)"Date";TAB(19)"Principal";
2695 IF ZZ = 2 THEN LPRINT TAB(1)"Date";TAB(19)"Principal";
2700 IF ZZ = 1 THEN PRINT TAB(37)"Amount";TAB(52)" Paid";TAB(69)" Paid"
2705 IF ZZ = 2 THEN LPRINT TAB(37)"Amount";TAB(52)" Paid";TAB(69)" Paid"
2710 IF ZZ = 1 THEN PRINT STRING$(79,"=")
2715 IF ZZ = 2 THEN LPRINT STRING$(79,"=")
2720 RETURN
)" Paid";TAB(69)" Paid"
2710 IF ZZ = 1 THEN PRINT STRING$(79,"=")
2715 IF